// 小程序更新检测
export function mpUpdate() {
  const updateManager = uni.getUpdateManager();
  updateManager.onCheckForUpdate((res) => {
    // 请求完新版本信息的回调
    console.log(res.hasUpdate);
  });
  updateManager.onUpdateReady(() => {
    uni.showModal({
      title: '更新提示',
      content: '检测到新版本，是否下载新版本并重启小程序？',
      success(res) {
        if (res.confirm) {
          // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
          updateManager.applyUpdate();
        }
      },
    });
  });
  updateManager.onUpdateFailed(() => {
    // 新的版本下载失败
    uni.showModal({
      title: '已经有新版本了哟~',
      content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
      showCancel: false,
    });
  });
}

export function formatPrice(price: string | number) {
  if (price === null || price === undefined)
    return '';
  return String(price).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}

// 取得[n,m]范围内随机数
export function fullClose(n: number, m: number) {
  return Math.floor(Math.random() * (m - n + 1)) + n;
}

// 随机打乱数组
export function shuffleArray<T>(array: T[]): T[] {
  return array.sort(() => Math.random() - 0.5);
}

export const formatMonth = (date?: Date | string) => {
  if (!date)
    date = new Date();
  const newDate = new Date(date);
  const y = newDate.getFullYear();
  const m = (newDate.getMonth() + 1).toString().padStart(2, '0');
  return `${y}-${m}`;
};

export function getFirstDayOfMonth() {
  const today = new Date(); // 获取当前日期
  const year = today.getFullYear(); // 获取年份
  const month = today.getMonth(); // 获取月份（0-11，0代表1月）

  // 格式化为 yyyy-mm-dd
  const formattedDate = `${year}-${String(month + 1).padStart(2, '0')}-${String(1).padStart(2, '0')}`;

  return formattedDate;
}

export function formatDuration(seconds: number): string {
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = seconds % 60;

  const padZero = (num: number): string => num.toString().padStart(2, '0');

  if (hours > 0) {
    return `${padZero(hours)}:${padZero(minutes)}:${padZero(secs)}`;
  }
  else {
    return `${padZero(minutes)}:${padZero(secs)}`;
  }
}

// 获取年月日
export function formatSimpleDate(val?: any, flag?: boolean) {
  const date = val ? new Date(val) : new Date();
  const year = date.getFullYear();
  const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;
  const day = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();
  return !flag ? (`${year}-${month}-${day}`) : (year.toString() + month + day);
}
